/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package scrabble;

import java.awt.GridLayout;
import java.awt.dnd.DnDConstants;
import java.awt.dnd.DropTarget;
import java.util.ArrayList;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
/**
 *
 * @author KhoufiAsma
 */
public class Chevalet extends JPanel {
    private ArrayList<Lettre> chev = new ArrayList<>();
    private Fenetre f;
    private Sachet s;
    private int nbLettre;
    private  DropTarget  dropTarget ;
    private Fenetre.MyDropTargetListenerBack mdtlb;
  
   
    public Chevalet(Sachet s, Fenetre f,Fenetre.MyDropTargetListenerBack mdtlb)
    {this.setBounds(510, 680, 500, 70);
        this.setLayout(new GridLayout(1,7));
        this.f=f;
        this.s=s;
       
       nbLettre=7;
       this.mdtlb=mdtlb;
        for(int i=0;i<nbLettre;i++) 
    {Lettre l=new Lettre(s.tirerlettre(),f);
    
        chev.add(l);
       
       dropTarget = new DropTarget(this, DnDConstants.ACTION_MOVE, mdtlb , true, null);  
        this.add(l);
        
        }
     

    }
    
    public void actualiser()
    {  
        for(int i=0;i<7;i++) 
        {
            Lettre jb= (Lettre) this.getComponent(i);
            if( jb.getIcon()==null)
            { Lettre l=new Lettre(s.tirerlettre(),f);
                this.remove(jb);
                this.add(l, i);
                 chev.add(i, l);
                  
            }
            nbLettre=7;
                
        }
        this.revalidate();
    
    }
    
   public void echanger(char lettre)
   {
      int i=0;
     char car;
      Lettre jb= (Lettre) this.getComponent(i);
     if(lettre>='a' && lettre<='z')
        car=(char)((int)lettre-32);
     else
     { if((lettre>='A' && lettre<='Z'))
             car=lettre;
             else
             car='0';
     }
     
      while(  i<nbLettre && jb.getNom()!=car)
      { 
       i++;
      if(i!=nbLettre) jb= (Lettre) this.getComponent(i);
      }
      if(i==nbLettre)
          JOptionPane.showMessageDialog(null,"Vous ne possédez pas cette lettre");
      else
      {
          this.remove(jb);
     
      Lettre l=new Lettre(s.changerLettre(jb),f);
      this.add(l, i);
       chev.add(i, l);
 
        this.revalidate();
      
      }
   }
  
  
   public void ajouterItem(CaseVide v) throws Exception
   {int i=0;
   Lettre l;
  
       while(i<7 && ((Lettre)getComponent(i)).getNom()!='0') {
           i++;
           
       }
       if(i==7)
          throw new Exception();
       else
       {
       l=new Lettre(v.getLettre(),f);
       if(l.isJoker())
       {l.setNom(' ');
        l.setIcon(new ImageIcon("../joker.jpg"));
       }
        remove(getComponent(i));
        add(l);
        revalidate();
   
       }
       
   }
 
   public void echange(Plateau p)
   {   String response;
      int i=0;
     char car;
      char lettre=' ';
    
      Lettre jb= (Lettre) this.getComponent(i);
       while(  i<nbLettre && !jb.isJoker())
      { 
       i++;
      if(i!=nbLettre) jb= (Lettre) this.getComponent(i);
      }
      if(i==nbLettre)
          JOptionPane.showMessageDialog(null,"Vous ne possédez pas de Joker");
      else
      {
      try{  do
                {
            response = JOptionPane.showInputDialog(null, "Quelle lettre voulez-vous échanger?",
         "Entrer une lettre",  JOptionPane.QUESTION_MESSAGE);
            
        }
        while(response.length()!=1);

      lettre=response.charAt(0);
   }
   catch(Exception e){}
     
    
     if(lettre>='a' && lettre<='z')
        car=(char)((int)lettre-32);
     else
     { if((lettre>='A' && lettre<='Z'))
             car=lettre;
             else
             car='0';
     }
    CaseVide c=p.chercherLettre(car);
   
    if(c!=null)
    {
       this.remove(jb);
      Lettre l=new Lettre(c.getLettre(),f);
      this.add(l, i);
       chev.add(i, l);
       jb.setNom(car);
       c.setLettre(jb);
       c.setIcon(jb.getIcon());
        this.revalidate();
    }
    else
    JOptionPane.showMessageDialog(null,"Cette lettre n'existe pas sur le plateau");
      
      }
   }

    void echange1(Plateau p) {
 String response;
      int i=0;
     char car;
      char lettre=' ';
      CaseVide c= p.rechercherJoker();
      if(c==null)
          JOptionPane.showMessageDialog(null,"Il n'existe pas de joker sur le plateau");
      else
      {   try{  do
                {
            response = JOptionPane.showInputDialog(null, "Quelle lettre voulez-vous échanger?",
         "Entrer une lettre",  JOptionPane.QUESTION_MESSAGE);
            
        }
        while(response.length()!=1);

      lettre=response.charAt(0);
   }
   catch(Exception e){}
     
    
     if(lettre>='a' && lettre<='z')
        car=(char)((int)lettre-32);
     else
     { if((lettre>='A' && lettre<='Z'))
             car=lettre;
             else
             car='0';
     }
     Lettre jb= (Lettre) this.getComponent(i);
       while(  i<nbLettre &&  jb.getNom()!=car)
      { 
       i++;
      if(i!=nbLettre) jb=(Lettre) this.getComponent(i);
      }
      if(i==nbLettre)
          JOptionPane.showMessageDialog(null,"Vous ne possédez pas Cette lettre");
      else
      {
          if(c.getLetNom()==car)
          
          { 
             
     this.remove(jb);
     c.getLettre().setNom(' ');
      Lettre l=new Lettre(c.getLettre(),f);
      this.add(l,i);
     
       c.setLettre(jb);
       c.setIcon(jb.getIcon());
        chev.add(i,l);
        this.revalidate();
          
          }
              else
              JOptionPane.showMessageDialog(null,"Vous devez échanger le joker avec la lettre qui le représente dans le mot");
      }
    }
    }
    
    
}
